1. Technical Field
The present invention relates to artificial intelligence and knowledge engineering, and in particular to automatic programming. A specific embodiment is described pertaining to the field of reflection seismology.
2. Description of the Related Art
An overview of automatic programming systems and methods is presented in Avron Barr & Edward A. Feigenbaum, Handbook of Artificial Intelligence, Vol. 2, Chapter X, William Kaufmann, Inc. (1982), pp. 297-379. Programming can be defined as specifying a method for doing something the computer can do in terms the computer can interpret. Although at the most basic level the computer performs hard-wired primitives such as adding, subtracting, or moving numbers, it is now common to write the computer program in a higher level language which is compiled or translated into the computer's primitive codes. The use of higher level languages, however, has not solved the problem of minimizing the degree of detail and precision with which the steps in the computer must be specified. Over the years, the capabilities of computer hardware have steadily improved, and the cost of hardware has steadily declined. Consequently, programming applications of increasingly greater complexity have been addressed, and due to the sheer size of the software, the software is costly and often unreliable.
Automatic programming refers to the use of a computer system that assists humans in some aspect of programming. Typically, an automatic programming system has four identifying characteristics including a specification method, a target language, a problem area, and an approach or method of operation.
Several methods have been used or proposed for specifying the properties or characteristics of the desired program. The desired program may be precisely and unambiguously defined by the syntax and semantics of a very high-level programming language. Alternatively, the desired program might be specified by a sufficient number of examples of input/output behavior. To date, some success has been achieved by natural language systems which can interpret a user's description in English of what the desired program is to do. Natural language systems often interact with the user by checking hypotheses, pointing out inconsistencies, and asking for further information.
The target language is the language in which the computer program is written for execution on a target computer. Typically, the target language is a standard high-level language such as LISP, PL/1, or GPSS.
The problem area is the area of intended application or field of use of the desired program when it is executed or run on the target computer. A natural language system called NLPQ, for example, helps generate programs for solving simple queuing problems. A system called Protosystem I is intended to help generate computer programs for all input/output-intensive data-processing systems such as inventory control, payroll, and other record-keeping systems. A system called PSI is intended to help generate computer programs for all symbolic computation such as list processing, searching and sorting, data storage and retrieval, and concept formation.
The method of operation is the procedure by which the automatic programming system generates the desired computer program coded in the target language in response to the specification of the properties or characteristics of the desired program. Because automatic programming is a young research area, the categorization of the methods used by existing systems is difficult. Some of the more clear-cut methods include theorem proving, program formation, knowledge engineering, automatic data selections, traditional problem solving, and induction.
A knowledge system called SACON advised engineers in the use of a general-purpose structural analysis program called MARC which uses finite-element analysis techniques to simulate the mechanical behavior of objects. The MARC program offers a large choice of analysis methods, material properties, and geometries that may be used to model the structure of interest. SACON interacts with the engineer to obtain a description of the structure and the loading conditions and to recommend an appropriate analysis strategy which the engineer can implement. An analysis strategy includes a number of analysis classes and their associated analysis recommendations. Although SACON identifies factors that should be considered, SACON does not actually determine how to solve the structural analysis problem and does not direct the target computer system. SACON determines an appropriate analysis strategy by the backward chaining of rules, and uses EMYCIN as its framework. EMYCIN is a domain-independent system for building rule based consultants. See James Bennett & Robert Engelmore, "SACON: A Knowledge-Based Consultant For Structural Analysis," Vol. 1 Proc. of the Sixth Int. Joint Conf. on Artificial Intelligence, Tokyo (Aug. 20-23 1979), pp. 47-49; James Bennett and Robert Engelmore, "SACON: A Knowledge-Based Consultant For Structural Analysis," Stanford University Computer Science Department Report No. STAN-CS-78-699 (September 1978). See also W. van Melle et al., The Emycin Manual, Stanford Computer Science Report No. STAN-CS-81-885 (1981).
A UNIX natural language help facility called UC advises users in using the UNIX operating system. UC is comprised of a language analyzer and generator, a context and memory model, an experimental common-sense planner, knowledge bases which are said to be highly extensible on both the UNIX domain and the English language, a goal analysis component, and a system for acquisition of new knowledge through instruction in English. UC translates English requestes such as "delete all files" into appropriate UNIX shell commands such as "rm *". UC does not, however, incorporate expertise or explain its reasoning. See Wilensky et al., "Talking to UNIX in English: An Overview of UC", Communications of the ACM, Vol. 27, No. 6 (June 1984), pp. 574-592.
Natural language front ends have also been used in database management systems. A system called INTELLECT is said to enable nontechnical people to access data stored in their computers. INTELLECT translates questions such as "how many salespeople were above quota in 1982" into a data retrieval request for a back-end database system and then translates the answer into English for the user. INTELLECT cannot explain its reasoning and doesn't incorporate knowledge about problem solving. See Larry R. Harris, "Natural Language Front Ends", reprinted in P. H. Winston & K. A. Pendergast (Eds.), The AI Business, Chapter 12, MIT Press, Cambridge, Mass. (1984), pp. 149-161.